package com.study.modules.designPatterns.No05ProxyMode;

/**
 * 代理模式
 * 代理模式是指在不改变目标对象的情况下，通过代理对象来控制对目标对象的访问。
 * 这种类型的设计模式属于结构型模式。
 * 这种模式创建了一个代理对象，该对象包含了目标对象的实例，通过代理对象来控制目标对象的访问。
 * 这种模式的主要优点是可以降低系统的耦合度，让目标对象和代理对象可以独立的变化。
 */
public class ProxySubject implements Subject {
    private Subject target;

    public ProxySubject(Subject target) {
        this.target = target;
    }

    @Override
    public void request() {
        System.out.println("before request");
        target.request();
        System.out.println("after request");
    }
}
